package com.qudian.pay.redis.support;

import java.util.concurrent.TimeUnit;

/**
 * @Description: K,V缓存接口<br>
 */
public interface ICache<K> extends ICommon<K> {
	
	//set一个值,如果原值存在覆盖之
	void set(K key, Object value);
	
	//set一个值,如果原值存在覆盖之
	void set(K key, Object value, long timeout, TimeUnit unit);
	
	//set一个值,如果值存在返回false,否则true
	Boolean setNx(K key, Object value);
	
	//根据key获取对应的对象
	<T> T get(Object key, Class<T> classOfT);
	
	//截取key对应的指
	String get(K key, long start, long end);

	//设置新值并返回旧值
	<T> T getAndSet(K key, Object value, Class<T> classOfT);
	
	//在key对应原值后添加value
	Integer append(K key, String value);
	
	//在给定偏移量后设置值
	void set(K key, Object value, long offset);
	
	//判断是否存在
	boolean isExist(K key);
	
	//给指定的key值设定过期时间（秒）
	void expire(String lockKey, int i);
}
